package org.footballmanager.pandafootball.system.service;

import tk.mybatis.mapper.entity.Example;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.List;

public interface BaseService<T> {
    /**
     * 保存实体类
     *
     * @param t       实体类
     * @param request 请求
     * @return 是否成功
     */
    int save(T t, HttpServletRequest request);

    /**
     * 更新所有字段
     *
     * @param t       实体类
     * @param request 请求
     * @return 是否成功
     */
    int updateAll(T t, HttpServletRequest request);

    /**
     * 更新不为空的字段
     *
     * @param t       实体类
     * @param request 请求
     * @return 是否成功
     */
    int updateNotNull(T t, HttpServletRequest request);

    /**
     * 删除记录
     *
     * @param id      主键
     * @param request 请求
     * @return 是否成功
     */
    int delete(Serializable id, HttpServletRequest request);

    /**
     * 根据主键获取记录
     *
     * @param id 主键
     * @return 记录
     */
    T get(Serializable id);

    /**
     * 获取所有记录
     *
     * @return 所有记录
     */
    List<T> getall();

    /**
     * 根据条件获取所有记录
     *
     * @param example 条件
     * @return 所有记录
     */
    List<T> findall(Example example);

    /**
     * 根据条件获取记录数量
     *
     * @param example 条件
     * @return 记录数量
     */
    int countByCondition(Example example);

    /**
     * 根据条件获取唯一记录
     *
     * @param example 条件
     * @return 唯一记录
     */
    T findByExample(Example example);
}

